package com.jms.framework.jdbc.transaction;

import java.sql.Connection;

/**
 * 事务类，封装了事务的相关信息及其状态。
 */
public class Transaction {
    // 事务名称，用于标识事务
    private String transactionName;
    // 标记事务是否处于活动状态
    private boolean isActive;
    // 标记事务是否处于打开状态
    private boolean isOpen;
    // 与事务关联的数据库连接
    private Connection connection;

    /**
     * 构造函数，创建一个指定名称和数据库连接的事务。
     * 创建时自动将事务设置为活动且打开状态。
     *
     * @param transactionName 事务名称
     */
    public Transaction(String transactionName) {
        this.transactionName = transactionName;
        this.isActive = true;
        this.isOpen = true;
    }

    /**
     * 获取事务名称。
     *
     * @return 事务名称
     */
    public String getTransactionName() {
        return transactionName;
    }

    /**
     * 设置事务名称。
     *
     * @param transactionName 新的事务名称
     */
    public void setTransactionName(String transactionName) {
        this.transactionName = transactionName;
    }

    /**
     * 检查事务是否处于活动状态。
     *
     * @return 如果事务处于活动状态返回true，否则返回false
     */
    public boolean isActive() {
        return isActive;
    }

    /**
     * 设置事务的活动状态。
     *
     * @param active 新的活动状态
     */
    public void setActive(boolean active) {
        isActive = active;
    }

    /**
     * 检查事务是否处于打开状态。
     *
     * @return 如果事务处于打开状态返回true，否则返回false
     */
    public boolean isOpen() {
        return isOpen;
    }

    /**
     * 设置事务的打开状态。
     *
     * @param open 新的打开状态
     */
    public void setOpen(boolean open) {
        isOpen = open;
    }

    /**
     * 获取与事务关联的数据库连接。
     *
     * @return 数据库连接对象
     */
    public Connection getConnection() {
        return connection;
    }

    /**
     * 设置与事务关联的数据库连接。
     *
     * @param connection 新的数据库连接对象
     */
    public void setConnection(Connection connection) {
        this.connection = connection;
    }
}
